reftests: Make animation-direction test more reliable
authorMatthias Clasen <mclasen@redhat.com>
Sun, 31 Jan 2016 18:51:54 +0000 (13:51 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 31 Jan 2016 18:51:54 +0000 (13:51 -0500)
This test was failing in continuous, where the tests are running
in a VM with disabled animations. Make the test adapt to that
situation by changing the reference ui on the fly if we find
that animations are disabled.

testsuite/reftests/Makefile.am
testsuite/reftests/animation-direction.ref.ui
testsuite/reftests/label-attributes.c [new file with mode: 0644]

index 89d89e0f8998ac2c4ad1ea989fa2bfec2cbf57d2..369bf6f348aee48ac00141bb95c384519eab799e 100644 (file)
@@ -506,6 +506,7 @@ libreftest_la_SOURCES =                     \
        statusbar-remove-all.c          \
        textview-border-windows.c       \
        textview-tags.c                 \
+       label-attributes.c              \
        $(NULL)
 
 -include $(top_srcdir)/git.mk
index 6d8dc7b86ae156150eed9b1544b25e3e43bd2426..c43ed1c11a5dc8cebec112107bdcbf556367b654 100644 (file)
@@ -15,6 +15,7 @@
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffff00000000"/>
             </attributes>
@@ -29,6 +30,7 @@
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffffffff0000"/>
             </attributes>
@@ -43,6 +45,7 @@
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffff00000000"/>
             </attributes>
@@ -57,6 +60,7 @@
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffff00000000"/>
             </attributes>
@@ -71,6 +75,7 @@
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffff00000000"/>
             </attributes>
@@ -85,6 +90,7 @@
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffff00000000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffff00000000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffff00000000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffff00000000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffff00000000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffff00000000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffff00000000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffff00000000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffff00000000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffff00000000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffff00000000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffff00000000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffffffff0000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffffffff0000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffffffff0000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffffffff0000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffffffff0000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffffffff0000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffffffff0000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffffffff0000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffffffff0000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffffffff0000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffffffff0000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffffffff0000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffffffff0000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffffffff0000"/>
             </attributes>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">XXX</property>
+            <signal name="map" handler="reftest:strip_attributes_if_no_animation"/>
             <attributes>
               <attribute name="foreground" value="#ffffffff0000"/>
             </attributes>
diff --git a/testsuite/reftests/label-attributes.c b/testsuite/reftests/label-attributes.c
new file mode 100644 (file)
index 0000000..7ee9902
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2016 Red Hat Inc.
+ *
+ * Author:
+ *      Matthias Clasen <mclasen@redhat.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+
+#include <gtk/gtk.h>
+
+#include "gtk-reftest.h"
+
+static gboolean
+unblock (gpointer data)
+{
+  reftest_uninhibit_snapshot ();
+  return G_SOURCE_REMOVE;
+}
+
+G_MODULE_EXPORT void
+strip_attributes_if_no_animation (GtkWidget *widget)
+{
+  gboolean enabled;
+
+  g_object_get (gtk_widget_get_settings (widget), "gtk-enable-animations", &enabled, NULL);
+  if (enabled)
+    return;
+
+  reftest_inhibit_snapshot ();
+  gtk_label_set_attributes (GTK_LABEL (widget), NULL);
+  g_timeout_add (500, unblock, NULL);
+}